/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package elaborate.h2x.transform;

import java.util.Iterator;
import java.util.List;
import org.w3c.dom.Document;
import org.w3c.dom.Node;

/**
 *
 * @author lendle
 */
public interface TransformingModel {
    public Document getDocument();
    public TransformingNode getNode(TransformingNodeId id);
    public TransformingNode getNode(Node node);
    public TransformingNode getNearestEnclosingNode(TransformingNode node);
    public Iterator<TransformingNode> iterateAllNodes();
    /**
     * root nodes:
     * 1. included in transformation, and
     * 2. with AsRootSetting defined on it
     * @return
     */
    public List<TransformingNode> getRoots();
}
